package com.enjoyor.soa.traffic.api.ubms.service.dubbo;

import com.enjoyor.soa.traffic.api.ubms.dto.RoadInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 维护（带方向）道路信息的Dubbo服务
 * @author yuankun
 * @version V1.0
 */
@SuppressWarnings("rawtypes")
public interface DubboRoadInfoService {

	/**
	 * 返回所有道路信息
	 * @param orderSeq 
	 * @param roadLike 
	 * @param techLevelCode 
	 * @param roadTypeCode 
	 * @param roadName 
	 * @param roadId 
	 * @return ResultPojo 所有道路信息
	 */
	public ResultPojo getRoadInfo(String roadId, String roadName, String roadTypeCode, String techLevelCode, String roadLike, String orderSeq);
	
	/**
	 * 分页返回所有道路信息
	 * @param regionId 
	 * @param idOrName 
	 * @param orderSeq 
	 * @param roadLike 
	 * @param roadLevel 
	 * @param roadTypeCode 
	 * @param roadName 
	 * @param roadId 
	 * @param page 分页对象
	 * @return ResultPojo 包含道路信息的分页对象
	 */
	public ResultPojo getPageRoadInfo(String roadId, String roadName, String roadTypeCode, String roadLevel, String roadLike, String orderSeq, String idOrName, String regionId, Page page);
	
	/**
	 * 根据区域分页返回所有道路信息
	 * @param page 分页对象
	 * @return ResultPojo 包含道路信息的分页对象
	 */
	public ResultPojo getPageRoadInfoByRegion(Page page ,String name ,String regionId);
	
	/**
	 * 根据道路名称，道路编码属性分页返回所有道路信息
	 * @param page 分页对象
	 * @param roadName 道路名称
	 * @param roadId 道路编码
	 * @return ResultPojo 包含道路信息的分页对象
	 */
	public ResultPojo getPageRoadInfo(Page page, String roadId, String roadName);
	
	/**
	 * 根据道路名称或编码属性分页返回所有道路信息 
	 * @param page 分页对象
	 * @param IdOrName 道路名称或编码
	 * @return ResultPojo 包含道路信息的分页对象
	 */
	public ResultPojo getPageRoadInfoByIdOrName(Page page, String IdOrName);
	
	/**
	 * 返回指定编码的道路信息
	 * @param roadId 道路编码
	 * @return ResultPojo 道路信息
	 */
	public ResultPojo getRoadInfoById(String roadId);
	
	/**
     * 根据道路类型ID,返回道路信息列表
     * @param roadId 道路编码
     * @return ResultPojo 道路信息
     */
    public ResultPojo getRoadInfoByRoadTypeId(String RoadTypeId);
	
	/**
	 * 返回指定名称的带方向道路信息
	 * @param roadName 道路名称
	 * @return ResultPojo 道路信息
	 */
	public ResultPojo getRoadInfoByName(String roadName);
	
	/**
	 * 添加一条道路信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param roadInfoDto 道路信息
	 * @return ResultPojo 添加结果
	 */
	public ResultPojo addRoadInfo(String token, RoadInfoDto roadInfoDto);
	
	/**
	 * 修改一条道路信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param roadInfoDto 道路信息
	 * @return ResultPojo 修改结果
	 */
	public ResultPojo editRoadInfo(String token, RoadInfoDto roadInfoDto);
	
	/**
	 * 删除指定编码的道路信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param roadId 道路编码
	 * @return ResultPojo 删除结果
	 */
	public ResultPojo removeRoadInfo(String token, String roadId);

	public ResultPojo getRoadInfoNoDirect(String roadId, String roadName, String roadTypeCode, String roadLevel,
			String roadLike, String orderSeq);

	public ResultPojo getPageBootStrapRoadInfo(String roadId, String roadName, String roadTypeCode, String roadLevel, String orderSeq, Page page);

	public ResultPojo getRoadInfo();

	public ResultPojo getPageRoadInfo(Page page);
}
